package com.health.dao;

import com.github.pagehelper.Page;
import com.health.pojo.Setmeal;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface SetMealMapper {
    /**
     * 套餐分页条件查询
     */
    Page<Setmeal> findByQuery(@Param("query") String query);

    /**
     * 根据套餐ID查询在order中的出现次数
     */
    int findCountBySetMealId(Integer id);

    /**
     * 删除套餐与检查组的关联
     */
    void deleteSetMealCheckGroup(Integer id);

    /**
     * 删除套餐
     */
    int deleteById(Integer id);

    /**
     * 新建套餐
     */
    int add(Setmeal setmeal);

    /**
     * 创建套餐与检查组的关联关系
     */
    void addSetMealCheckGroup(@Param("seatmealId") Integer seatmealId,
                              @Param("checkGroupIds") Integer[] checkGroupIds);

    /**
     * 根据ID查询套餐
     */
    Setmeal findById(Integer id);

    /**
     * 根据套餐ID查询关联到的检查组ID
     */
    List<Integer> findCheckGroupIds(Integer id);

    /**
     * 编辑套餐
     */
    int update(Setmeal setmeal);

    /**
     * 查询数据库中的所有图片
     */
    List<String> findImgs();

    /**
     * 查询所有套餐
     */
    List<Setmeal> findAll();

    /**
     * 查询套餐详情
     */
    Setmeal findDetail(Integer id);

    /**
     * 查询热门套餐数据报告
     * 预订数量前3的套餐
     */
    List<Map<String, Object>> findSetMealReport();

    /**
     * 查询套餐预订数量
     */
    List<Map<String, Object>> findSetMealCount(@Param("start") Date start,
                                               @Param("end") Date end);

    /**
     * 根据条件查询套餐
     */
    List<Setmeal> findByQueryNoPage(@Param("query")String query);
}
